home *** CD-ROM | disk | FTP | other *** search
- 1 ' ** PROGRAM 4.19 **
- 10 ' ** USE MATH EQUATION TO CONTROL BOUNCING BALL **
- 20 SCREEN 1
- 30 CLS
- 40 COLOR 0,1
- 50 KEY OFF
- 60 ' GIVE USER DIRECTIONS
- 70 LOCATE 9,12
- 80 PRINT "The Bouncing Ball"
- 90 LOCATE 16,13
- 100 PRINT "Type 'Q' to Quit"
- 110 LOCATE 17,11
- 120 PRINT "Type 'C' to Continue"
- 130 A$=INKEY$
- 140 IF A$="c" OR A$="C" THEN 180
- 150 IF A$="q" OR A$="Q" THEN 3000
- 160 GOTO 130
- 170 ' ***** Start Game *****
- 180 CLS
- 190 ' ** Draw Basket **
- 200 BASKET = 0
- 210 PSET (250,5),2
- 220 DRAW "D65R5U65L5"
- 230 PAINT (252,25),2,2
- 240 PSET (250,65),2
- 250 DRAW "l50"
- 260 LINE -(210,95),3
- 270 LINE (245,65)-(235,95),3
- 280 LINE (220,65)-(230,95),3
- 290 LINE (210,65)-(220,95),3
- 300 LINE (235,65)-(225,95),3
- 310 LINE (225,65)-(215,95),3
- 320 LINE (215,65)-(207,85),3
- 330 LINE (230,65)-(238,85),3
- 340 ' ** Draw Ball **
- 350 CIRCLE (35,182),12,2
- 360 PAINT (35,182),2,2
- 370 CIRCLE (50,182),12,0
- 380 CIRCLE (20,182),12,0
- 390 LINE (23,182)-(47,182),0
- 400 ' *** Create Figures for Ball in Different Positions ***
- 410 DIM BALL (200)
- 420 DIM BALL2(200)
- 430 DIM BALL3(200)
- 440 DIM BALL4(200)
- 450 GET (15,198)-(47,170),BALL
- 460 GET (23,194)-(47,170),BALL2
- 470 GET (23,194)-(47,165),BALL3
- 480 GET (23,196)-(57,168),BALL4
- 490 ' *** Draw Rest of Background ***
- 500 PSET (255,35),2
- 510 DRAW "R30D160L4U156L26"
- 520 PAINT (257,37),2,2
- 530 LINE (0,200)-(320,200),1
- 540 ' *** Set up Music Strings ***
- 550 L$="T200O3L2B-L4B-.L8AL4GL4F.P4"
- 560 M$="l8dl8e-l4fl8gl8al4b-o4l4co3l2a."
- 570 N$="l8fl8ao4l8cl2dl2co3l2b-.p4"
- 580 O$="l8al8b-o4l4co3l4b-l4al4gl4fo4l4dl8dl4c."
- 590 P$="o3l2b-.l8a-l8gl8fl4a-l4gl2gl4g.l8al8bo4l8cl4dl3e-.p4"
- 600 Q$="o3l4fl2b-l4ff#l2go4dl4do3b-l8b-o4l4c.o3l2b-.p20"
- 610 ' *** Place ball to Begin ***
- 620 X=15
- 630 Y=170
- 640 PUT (X,Y),BALL,XOR
- 650 ' *** Loop for Action. See if user wants to quit ***
- 660 A$=INKEY$
- 670 IF A$="q" OR A$="Q" THEN 3000
- 680 ' *** Play music with the action ***
- 690 GOSUB 2000
- 700 GOSUB 2002
- 710 GOSUB 2004
- 720 ' ** Use parabolic equation to calculate trajectory of ball **
- 730 ' *** Equation for motion to hoop ***
- 740 FOR Z = 35 TO 217 STEP 2.5
- 750 G = -2.515656*Z+6.96499E-03*Z*Z+249.7012
- 760 G = INT(G)
- 770 PUT (Z,G),BALL,PSET
- 780 NEXT
- 790 GOSUB 2001
- 800 PUT (Z-2.5,G),BALL,XOR
- 810 ' *** Bounce off backboard ***
- 820 FOR Z=216 TO 250 STEP -2
- 830 G = G + 2
- 840 PUT (Z,G),BALL2,PSET
- 850 PUT (Z,G),BALL2,XOR
- 860 NEXT
- 870 ' *** go through hoop ***
- 880 Y = G
- 890 Z = 211
- 900 FOR G = Y TO 95 STEP 5
- 910 PUT (Z,G),BALL2,XOR
- 920 PUT (Z,G),BALL2,XOR
- 930 NEXT
- 940 ' play more music
- 950 GOSUB 2003
- 960 ' ** fall to ground **
- 970 FOR G = 100 TO 165 STEP 5
- 980 PUT (Z,G),BALL3,PSET
- 990 NEXT
- 1000 ' ** take first ground bounce **
- 1010 PUT (Z,G-5),BALL3,XOR
- 1020 G=G-5
- 1030 FOR Z = 210 TO 180 STEP -4
- 1040 PUT (Z,G),BALL4,PSET
- 1050 G = G - 4
- 1060 NEXT
- 1070 ' ** downward trajectory on first bounce **
- 1080 FOR Z = 180 TO 146 STEP -4
- 1090 PUT (Z,G),BALL4,PSET
- 1100 G = G + 4
- 1110 NEXT
- 1120 ' ** second bounce up **
- 1130 FOR Z = 146 TO 120 STEP -3
- 1140 PUT (Z,G),BALL4,PSET
- 1150 G = G - 3
- 1160 NEXT
- 1170 ' ** end second bounce **
- 1180 FOR Z = 120 TO 97 STEP -3
- 1190 PUT (Z,G),BALL4,PSET
- 1200 G = G + 3
- 1210 NEXT
- 1220 ' ** start up on last bounce **
- 1230 G = G + 2
- 1240 FOR Z = 96 TO 65 STEP -2
- 1250 PUT (Z,G),BALL4,PSET
- 1260 G = G - 1
- 1270 NEXT
- 1280 ' ** end last bounce **
- 1290 FOR Z = 65 TO 34 STEP -2
- 1300 PUT (Z,G),BALL4,PSET
- 1310 G = G + 1
- 1320 NEXT
- 1330 ' reset and begin again
- 1340 IF BASKET = 2 THEN BASKET = 0 ELSE BASKET = BASKET + 1
- 1350 GOTO 650
- 1360 ' ** go-team-go music **
- 2000 IF BASKET=0 THEN PLAY "mbxl$;xm$;":RETURN ELSE RETURN
- 2001 IF BASKET = 0 THEN PLAY "mbxn$;":RETURN ELSE RETURN
- 2002 IF BASKET = 1 THEN PLAY "mbxo$;":RETURN ELSE RETURN
- 2003 IF BASKET = 1 THEN PLAY "mbxp$;":RETURN ELSE RETURN
- 2004 IF BASKET = 2 THEN PLAY "mbxq$;"
- 2005 RETURN
- 3000 END
-